package models

type ECSRequest struct {
	InstanceType       string `json:"instance_type"` // 实例规格
	InstanceId         string `json:"instance_id"`   // 实例ID
	InstanceName       string `json:"instance_name"` // 实例名称
	SystemDiskSize     int32  `json:"system_disk_size"`
	SystemDiskCategory string `json:"system_disk_category"`
	DataDisk           []DataDisk
	ImageId            string   `json:"image_id"`
	SubnetId           string   `json:"subnet_id"`
	SecurityGroups     []string `json:"security_group"`
	HostName           string   `json:"host_name"` // 主机名
	Password           string   `json:"password"`  //  密码
	Description        string   `json:"description"`
	Period             int32    `json:"period"` // 购买时长
}

type ECSResponse struct {
	Cpu                 int32    `json:"Cpu,omitempty" xml:"Cpu,omitempty"`
	CreationTime        string   `json:"CreationTime,omitempty" xml:"CreationTime,omitempty"`
	CreditSpecification string   `json:"CreditSpecification,omitempty" xml:"CreditSpecification,omitempty"`
	Description         string   `json:"Description,omitempty" xml:"Description,omitempty"`
	ExpiredTime         string   `json:"ExpiredTime,omitempty" xml:"ExpiredTime,omitempty"`
	HostName            string   `json:"HostName,omitempty" xml:"HostName,omitempty"`
	ImageId             string   `json:"ImageId,omitempty" xml:"ImageId,omitempty"`
	InnerIpAddress      []string `json:"InnerIpAddress,omitempty" xml:"InnerIpAddress,omitempty" type:"Struct"`
	InstanceChargeType  string   `json:"InstanceChargeType,omitempty" xml:"InstanceChargeType,omitempty"`
	InstanceId          string   `json:"InstanceId,omitempty" xml:"InstanceId,omitempty"`
	InstanceName        string   `json:"InstanceName,omitempty" xml:"InstanceName,omitempty"`
	InstanceType        string   `json:"InstanceType,omitempty" xml:"InstanceType,omitempty"`
	Memory              int32    `json:"Memory,omitempty" xml:"Memory,omitempty"`
	OSName              string   `json:"OSName,omitempty" xml:"OSName,omitempty"`
	OSType              string   `json:"OSType,omitempty" xml:"OSType,omitempty"`
	RegionId            string   `json:"RegionId,omitempty" xml:"RegionId,omitempty"`
	StartTime           string   `json:"StartTime,omitempty" xml:"StartTime,omitempty"`
	Status              string   `json:"Status,omitempty" xml:"Status,omitempty"`
	// *   Pending: The instance is being created.
	// *   Running: The instance is running.
	// *   Starting: The instance is being started.
	// *   Stopping: The instance is being stopped.
	// *   Stopped: The instance is stopped.
	ZoneId       string       `json:"ZoneId,omitempty" xml:"ZoneId,omitempty"`
	VpcAttribute VpcAttribute `json:"vpcAttribute"`
}

type DataDisk struct {
	Size        int32  `json:"size"`
	Category    string `json:"category"`
	DiskName    string `json:"diskName"`
	DeviceMount string `json:"deviceMount"`
}

type VpcAttribute struct {
	NatIpAddress     string   `json:"NatIpAddress,omitempty" xml:"NatIpAddress,omitempty"`
	PrivateIpAddress []string `json:"PrivateIpAddress,omitempty" xml:"PrivateIpAddress,omitempty" type:"Struct"`
	VSwitchId        string   `json:"VSwitchId,omitempty" xml:"VSwitchId,omitempty"`
	VpcId            string   `json:"VpcId,omitempty" xml:"VpcId,omitempty"`
}
